﻿using System;
using System.Linq;
using System.Collections.Generic;
using SIM.Geo.DA;
using SIM.Geo.BE;


namespace SIM.Geo.BL
{
    /// <summary>
    /// Clase de la capa de negocios que gestiona Tipo de Roca
    /// </summary>
    public class BLTipoRoca
    {
        #region Metodos
        /// <summary>
        /// Método que devuelve la lista de geologos
        /// </summary>
        /// <returns></returns>
        public List<TipoRoca> ListarTipoRoca()
        {
            return Accesor.ListarTipoRoca();
        }
        /// <summary>
        /// Método que insertar un nuevo geologo
        /// </summary>
        /// <param name="geologo"></param>
        /// <returns></returns>
        public int InsertarTipoRoca(TipoRoca tiporoca)
        {
            return Accesor.InsertarTipoRoca(tiporoca);
        }
        /// <summary>
        /// Método que modifica geologo
        /// </summary>
        /// <param name="geologo"></param>
        public void ModificarTipoRoca(TipoRoca tiporoca)
        {
            var tiporocaEdit = Accesor.ObtenerTipoRoca(tiporoca.CodigoTipoRoca);
            tiporocaEdit.Descripcion = tiporoca.Descripcion;
            Accesor.ModificarTipoRoca(tiporocaEdit);
        }
        /// <summary>
        /// Método que elimina geologo
        /// </summary>
        /// <param name="codigoGeologo"></param>
        public void EliminarTipoRoca(int codigoTipoRoca)
        {
            var tiporoca = Accesor.ObtenerTipoRoca(codigoTipoRoca);
            Accesor.EliminarTipoRoca(tiporoca);
        }
        /// <summary>
        /// Método que busca por un nombre de labor
        /// </summary>
        /// <param name="nombre"></param>
        /// <returns></returns>
        public List<TipoRoca> BuscarTipoRoca(string nombre)
        {
            return Accesor.BuscarTipoRoca(nombre);
        }
        /// <summary>
        /// Método que devuelve una geologo por código
        /// </summary>
        /// <param name="codigoGeologo"></param>
        /// <returns></returns>
        public TipoRoca ObtenerTipoRoca(int codigoTipoRoca)
        {
            return Accesor.ObtenerTipoRoca(codigoTipoRoca);
        }

        /// <summary>
        /// Devuelve la lista para ComboBox, DropdownList, devuelve campos Value y Text
        /// </summary>
        /// <returns></returns>
        public List<ListItemInt> ObtenerListItem()
        {

            var result = Accesor.ListarTipoRoca();
            return result
                .Select(x => new ListItemInt { Value = x.CodigoTipoRoca, Text = x.Descripcion }).OrderBy(x => x.Text).ToList();

        }
        #endregion

        #region Accesor
        private static DATipoRoca Accesor
        {
            [System.Diagnostics.DebuggerStepThrough]
            get { return new DATipoRoca(); }
        }

        #endregion Accesor
    }
}
